import { setToken } from '@/utils/token'
import { defineStore } from 'pinia'

export interface IUser {
    id: number
    userId: string
    nickname: string
    avatar: string
    name: string
    xueyuan: string
    banji: string
    role: 'student' | 'zhujiao' | 'teacher' | 'admin'
}

export interface IUserState extends IUser {
    logined: boolean
}

const defaultUserInfo: IUser = {
    id: 0,
    userId: '',
    nickname: '',
    avatar: '',
    name: '',
    xueyuan: '',
    banji: '',
    role: 'student',
}

// 你可以任意命名 `defineStore()` 的返回值，但最好使用 store 的名字，同时以 `use` 开头且以 `Store` 结尾。
// (比如 `useUserStore`，`useCartStore`，`useProductStore`)
// 第一个参数是你的应用中 Store 的唯一 ID。
export const useUserStore = defineStore('user', {
    // 其他配置...
    state: () => {
        return {
            // 是否已登录
            logined: false,
            // 用户信息
            userInfo: defaultUserInfo,
        }
    },
    actions: {
        login(data: { token: string; userInfo: IUser }) {
            this.logined = true
            setToken(data.token)
            this.userInfo = data.userInfo
        },
        logout() {
            this.logined = false
            this.userInfo = defaultUserInfo
        },
    },
})
